import { request } from '@/utils/request' // 导入封装好的请求方法
import qs from 'qs'

/**
 * 文件相关接口
 */
export const uploadApi = {
	
	/**
	 * 上传文件到OSS
	 * @param {File} file 要上传的文件对象
	 * @param {Object} [options] 可选配置
	 * @param {Function} [options.onProgress] 上传进度回调函数
	 * @param {Function} [options.onUploadComplete] 上传完成回调函数
	 * @param {Function} [options.onError] 上传错误回调函数
	 * @returns {Promise<SysFile>} 上传结果，包含文件信息
	 */
	uploadOSS: (formData, options = {}) => {
	  return request({
	    url: '/file/uploadOSS',
	    method: 'POST',
	    data: formData,
	    headers: {
	      'Content-Type': 'multipart/form-data'
	    },
	    onUploadProgress: (progressEvent) => {
	      if (options.onProgress) {
	        const percentCompleted = Math.round(
	          (progressEvent.loaded * 100) / progressEvent.total
	        )
	        options.onProgress(percentCompleted)
	      }
	    }
	  }).then(response => {
	    if (options.onUploadComplete) {
	      options.onUploadComplete(response)
	    }
	    return response.data
	  }).catch(error => {
	    if (options.onError) {
	      options.onError(error)
	    }
	    throw error
	  })
	},
	 /**
	   * 删除OSS上的文件
	   * @param {string} fileUrl 要删除的文件访问URL
	   * @returns {Promise<boolean>} 是否删除成功
	   * @example
	   * // 示例URL
	   * https://lizs123.oss-cn-beijing.aliyuncs.com/2025/07/09/屏幕截图 2023-05-26 003236_20250709170341A001.png
	   */
	  deleteOSS: (fileUrl) => {
	    if (!fileUrl) {
	      return Promise.reject(new Error('文件URL不能为空'))
	    }
	
	    return request({
	      url: '/file/deleteOSS',
	      method: 'DELETE',
	      params: { fileUrl }, // 作为查询参数传递
	      // 或者如果需要作为请求体传递：
	      // data: { fileUrl },
	      // headers: {
	      //   'Content-Type': 'application/x-www-form-urlencoded'
	      // }
	    }).then(response => {
	      return true // 删除成功返回true
	    }).catch(error => {
	      console.error('删除文件失败:', error)
	      throw error // 继续抛出错误以便外部捕获
	    })
	  }
	
}